Flutter Engine UIDartState
介绍
该类继承自 tonic 的 DartState,是对 Dart Isolate 的引用,基于该类派生出 DartIsolate。UIDartState 是 Flutter Engine 中比较重要的一个底层类。
UIDartState::Context
Context 是 UIDartState 的内部结构体,从注释中,它的功能是:
Shell 中掌握的资源,如果要暴露到框架中,需要通过 Context 进行访问。因此该结构是整个框架中底层资源的上下文访问。
涉及到的资源有:
名称 | 类型 | 说明 |
---|---|---|
task_runners | TaskRunners | 访问 Flutter 的 4 条 TaskRunner:platform、raster、ui、io |
snapshot_delegate | SnapshotDelegate | 收集 Flutter 视图结构的 raster snapshots |
io_manager | IOManager | 供 Isolate 使用的 IO 管理器,用于异步纹理上传 |
unref_queue | SkiaUnrefQueue | 供 Isolate 使用,收集 GPU 资源的 unref 队列 |
image_decoder | ImageDecoder | 图片解码器 |
image_generator_registry | ImageGeneratorRegistry | 也是与图片解码相关 |
advisory_script_uri | String | 用于调试的 advisory 脚本地址 |
advisory_script_entrypoint | String | advisory 脚本入口 |
volatile_path_tracker | VolatilePathTracker |
创建:该结构体在 UIDartState 构造函数中创建。UIDartState 的创建时机呢?得看其派生类 DartIsolate,有 3 处创建的地方:
- DartIsolate::CreateRootIsolate
- DartIsolate::DartIsolateGroupCreateCallback
- DartIsolate::DartIsolateInitializeCallback